#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int removeElement(int* nums, int numsSize, int val) {
//    int src = 0;
//    int dest = 0;
//    int i = 0;
//    int count = 0;
//    while (src < numsSize) {
//        if (nums[src] == val) {
//            src++;
//        }
//        else if (nums[src] != val) {
//            nums[dest] = nums[src];
//            dest++;
//            src++;
//           
//        }
//        
//    }
//
//    return dest - 1;
//
//}
//int main() {
//    int num[] = { 0,1,2,2,3,0,4,2 };
//    int x = 2;
//    int numsize = 8;
//   int ret =  removeElement(&num, numsize, x);
//   for (int i = 0; i <= ret; i++) {
//       printf("%d ", num[i]);
//   }
//    
//}


//int removeDuplicates(int* nums, int numsSize) {
//    int src = 0;
//    int dest = 0;
//    int arr[100] = { 0 };
//    int i = 0;
//    while (i < numsSize) {
//        arr[i] = -1;
//        i++;
//    }
//    while (src < numsSize) {
//        if (arr[nums[src]] == -1) {
//            nums[dest] = nums[src];
//            arr[nums[src]] = 1;
//            dest++;
//            src++;
//            
//        }
//        else if (arr[nums[src]] == 1) {
//            src++;
//        }
//    }
//    return dest;
//}
//
//int main() {
//    int num[] = { 0,0,1,1,1,2,2,3,3,4 };
//    int x = 2;
//    int numsSize = sizeof(num)/sizeof(num[0]);
//   int ret = removeDuplicates(&num, numsSize);
//   for (int i = 0; i < ret; i++) {
//       printf("%d ", num[i]);
//   }
//    
//}



void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int x = nums1Size - 1;
    int n1 = n - 1;
    int n2 = m - 1;
    while (n2 >= 0) {
        if (nums1[n1] < nums2[n2]) {
            nums1[x] = nums2[n2];
            
            n2--;
            x--;
        }
        else if(nums1[n1] > nums2[n2]){
            nums1[x] = nums1[n1];
           
            n1--;
            x--;
        }
        else
        {
            nums1[x] = nums1[n1];
            n1--;
            n2--;
            x--;
        }
    }
}


int main() {
    int nums1[] = { 1,2,3,0,0,0 };
    int nums2[] = { 2,5,6 };
    int nums1Size = sizeof(nums1) / sizeof(nums1[0]);
    int nums2Size = sizeof(nums2) / sizeof(nums2[0]);
    int m = 3;
    int n = sizeof(nums2) / sizeof(nums2[0]);
    merge(&nums1,nums1Size, m, &nums2, nums2Size, n);
    int i = 0;
    for (i = 0; i < nums1Size; i++) {
        printf("%d ", nums1[i]);
    }
}